#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    int *elem;
    int length;
}SSTable;
void InitTable(SSTable *T,int length)
{
    T->elem=(int *)malloc(length*sizeof(int));
    T->length=length;
    for(int i=0;i<T->length;i++)
    {
        T->elem[i]=-1;
    }
}
int IsEmpty(SSTable *T)
{
    if(T->elem[0]==-1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int IsFull(SSTable *T)
{
    if(T->elem[(T->length)-1]==-1)
    {
        return 0;
    }
    else
    {
        return 1;
    }
}
void Traverse(SSTable *T)
{
    if(IsEmpty(T))
    {
        printf("表为空");
        return;
    }
    for(int i=0;i<T->length;i++)
    {
        printf("%d ",T->elem[i]);
    }
}
void Insert(SSTable *T,int pos,int e)
{
    if(IsFull(T))
    {
        printf("表已满");
        return;
    }
    if(pos<0||pos>T->length)
    {
        printf("位置不合法");
        return;
    }
    else
    {
        for(int i=T->length-1;i>=pos;i--)
        {
            T->elem[i]=T->elem[i-1];
        }
        T->elem[pos]=e;
    }
}
void Delete(SSTable *T,int pos)
{
    if(IsEmpty(T))
    {
        printf("表为空");
        return;
    }
    if(pos<0||pos>T->length)
    {
        printf("位置不合法");
        return;
    }
    else
    {
        for(int i=pos;i<T->length-1;i++)
        {
            T->elem[i]=T->elem[i+1];
        }
        T->elem[T->length-1]=-1;
    }
}
int main() 
{
    SSTable T;
    int length,pos,e;
    int arr[10]={1,2,3,4,5,6,7,8,9,-1};
    InitTable(&T,10);
    T.elem=arr;
    printf("%d\n",IsFull(&T));
    Traverse(&T);
    printf("\n");
    Insert(&T,4,6);
    printf("\n");
    Traverse(&T);
    printf("\n");
    Delete(&T,4);
    printf("\n");
    Traverse(&T);
}